package Chapter5;

import java.text.DecimalFormat;
import java.util.Vector;

public class VectorMethodTest {
    public static void main(String[] args) {
        Vector<Double> MyVector = new Vector<>(100, 50); //不填参数默认容量为10个对象
        //创建一个Vector，类型为double，由于Vector只能存放对象，因此此处的Double是包装类，首字母大写。

        DecimalFormat fmt = new DecimalFormat("0.###"); //格式化数据，只显示到小数点后三位

        //————添加元素的方法————
        for (int i = 0; i < 11; i++)
            MyVector.addElement(Double.valueOf(fmt.format(Math.random())));
        //for循环添加元素。使用Math.random产生随机数，使用DecimalFormat进行将随机数格式化为只显示小数点后三位，并用valueOf转为Double包装类
        //Chapter5.MyVector.addElement(Math.random()); 将会自动装箱成Double包装类，因此不需要Double.valueOf()，但无法使用格式数据的功能
        System.out.println("当前MyVector的元素（对象）有：" + MyVector);

        System.out.println("显示指定下标的元素：" + MyVector.elementAt(5)); //显示下标为5的元素

        MyVector.insertElementAt(0.53, 3); //此处也使用自动装箱为Double包装类。在下标为3的位置，添加当前类型的对象，其他元素后移一位。
        System.out.println("添加元素后的MyVector=" + MyVector.elementAt(4));


        //————修改或删除元素的方法————
        MyVector.setElementAt(2.3, 2); //修改下标2的元素
        System.out.println("修改元素后的MyVector=" + MyVector);

        System.out.println("是否删除成功指定的元素值成功？" + MyVector.removeElement(0.33)); //删除第一个与obj匹配的元素

        MyVector.removeElementAt(3); //删除下标为3的元素
        System.out.println("删除指定下标的元素后的MyVector=" + MyVector);

        MyVector.removeAllElements(); //删除所有元素
        System.out.println("删除所有元素后的MyVector=" + MyVector);

        //循环删除某个元素
        Vector<String> MyVector2 = new Vector<>(100, 50);
        for (int i = 0; i < 11; i++) {
            MyVector2.addElement("Welcome");
            MyVector2.addElement("to");
            MyVector2.addElement("beijing");
        }
        //while (MyVector2.removeElement("to")); 若存在该元素，即条件为真时，循环地删除to元素，直到条件为假，未找到to停止循环
        System.out.println(MyVector2);

        //————查找元素的方法————
        Vector<String> MyVector3 = new Vector<>(100, 50);
        for (int i = 0; i < 3; i++) {
            MyVector3.addElement("Welcome");
            MyVector3.addElement("to");
            MyVector3.addElement("beijing");
        }
        System.out.println("显示MyVector3的元素：" + MyVector3);
        System.out.println("显示指定下标的元素：" + MyVector3.elementAt(5)); //显示下标为5的元素
        System.out.println("查找指定元素：" + MyVector3.contains("to")); //查找是否包含指定元素

        System.out.println("从指定位置开始向后查找元素：" + MyVector3.indexOf("to", 3)); //从第三个元素开始，向后查找第一个匹配的元素的下标位置
        System.out.println("从指定位置开始向前查找元素：" + MyVector3.lastIndexOf("to", 8)); //从第八个元素开始，向前查找第一个匹配的元素的下标位置
        //indexOf和lastIndexOf视一个元素为下标，因为它是一个集合，且无论从前往后搜索还是从后往前搜索，返回的下标是从首部第0个元素开始计算。
    }
}
